<!-- 防止页面数据重复定义,模板数据统一在此 -->
<!--:
-->
<!-- widget grid -->
<div id="paramTable"></div>
<!-- end widget grid -->

<script type="text/javascript">

    /* DO NOT REMOVE : GLOBAL FUNCTIONS!
     *
     * pageSetUp(); WILL CALL THE FOLLOWING FUNCTIONS
     *
     * // activate tooltips
     * $("[rel=tooltip]").tooltip();
     *
     * // activate popovers
     * $("[rel=popover]").popover();
     *
     * // activate popovers with hover states
     * $("[rel=popover-hover]").popover({ trigger: "hover" });
     *
     * // activate inline charts
     * runAllCharts();
     *
     * // setup widgets
     * setup_widgets_desktop();
     *
     * // run form elements
     * runAllForms();
     *
     ********************************
     *
     * pageSetUp() is needed whenever you load a page.
     * It initializes and checks for all basic elements of the page
     * and makes rendering easier.
     *
     */
    pageSetUp();

    /*
     * ALL PAGE RELATED SCRIPTS CAN GO BELOW HERE
     */
    // PAGE RELATED SCRIPTS
    // pagefunction
    var pagefunction = function () {

        var params = {type: "${type}"};
        var $param_table = $('#paramTable');

        // 主机地址  hostname
        // 端口     port
        // 用户名    username
        // 密码     password
        // 私钥     private_key
        // 私钥密码  passphrase
        // 颜色方案  color_scheme
        // 字体     font_name
        // 字体大小  font_size
        // 开启sftp  enable_sftp
        var ssh_columns = [
            {data: 'name', title: '名称'},
            {data: 'hostname', title: '主机地址', class: 'text-center'},
            {
                data: 'port', title: '端口',
                render: function (value) {
                    return '<div class="text-center"><span class="badge  bg-color-greenLight">' + value + '</span></div>';
                }
            },
            {data: 'username', title: '用户名', class: 'text-center'},
            {
                data: 'color_scheme', title: '颜色方案',
                render: function (value) {
                    return '<div class="text-center">' + getColorLabel(value) + '</div>';
                }
            },
            {data: 'font_name', title: '字体名称', class: 'text-center'},
            {
                data: 'font_size', title: '字体大小',
                render: function (value) {
                    return '<div class="text-center"><span class="label label-info">' + value + '</span></div>';
                }
            },
            {
                data: 'enable_sftp', title: '启用SFTP',
                render: function (value) {
                    return '<div class="text-center"><span class="label label-primary">' + getLabel(value) + '</span></div>';
                }
            }
        ];

        // 主机地址  hostname
        // 端口     port
        // 用户名    username
        // 密码     password
        // 颜色方案  color_scheme
        // 字体     font_name
        // 字体大小  font_size
        var telnet_columns = [
            {data: 'name', title: '名称'},
            {data: 'hostname', title: '主机地址', class: 'text-center'},
            {
                data: 'port', title: '端口',
                render: function (value) {
                    return '<div class="text-center"><span class="badge  bg-color-greenLight">' + value + '</span></div>';
                }
            },
            {data: 'username', title: '用户名', class: 'text-center'},
            {
                data: 'color_scheme', title: '颜色方案',
                render: function (value) {
                    return '<div class="text-center">' + getColorLabel(value) + '</div>';
                }
            },
            {data: 'font_name', title: '字体名称', class: 'text-center'},
            {
                data: 'font_size', title: '字体大小',
                render: function (value) {
                    return '<div class="text-center"><span class="label label-info">' + value + '</span></div>';
                }
            }
        ];


        // 主机地址   hostname
        // 端口      port
        // 重连次数   autoretry
        // 密码      password
        // 色彩深度   color_depth
        // 色彩饱和度  swap_red_blue
        // 鼠标       cursor
        // 编码       encodings
        // 只读       read_only
        // 开启sftp      enable_sftp
        // sftp主机地址   sftp_hostname
        // sftp端口      sftp_port
        // sftp用户名     sftp_username
        // sftp密码      sftp_password
        // sftp私钥      sftp_private_key
        // sftp私钥密码   sftp_passphrase
        // sftp默认目录   sftp_directory
        // 目的主机       dest_host
        // 目的端口       dest_port
        // 剪贴板编码     clipboard_encoding
        var vnc_columns = [
            {data: 'name', title: '名称'},
            {data: 'hostname', title: '主机地址', class: 'text-center'},
            {
                data: 'port', title: '端口',
                render: function (value) {
                    return '<div class="text-center"><span class="badge  bg-color-greenLight">' + value + '</span></div>';
                }
            },
            {
                data: 'color_depth', title: '色彩深度',
                render: function (value) {
                    return '<div class="text-center">' + getDepthLabel(value) + '</div>';
                }
            },
            {
                data: 'swap_red_blue', title: '红蓝互换',
                render: function (value) {
                    if (value == "true" || value == true || value == "1" || value == 1) {
                        return '<div class="text-center"><span class="label label-warning">' + "是" + '</span></div>';
                    }
                    return '<div class="text-center"><span class="label label-warning">' + "否" + '</span></div>';
                }
            },
            {data: 'cursor', title: '鼠标', class: 'text-center'},
            {
                data: 'read_only', title: '只读',
                render: function (value) {
                    if (value == "true" || value == true || value == "1" || value == 1) {
                        return '<div class="text-center"><span class="label label-info">' + "是" + '</span></div>';
                    }
                    return '<div class="text-center"><span class="label label-default">' + "否" + '</span></div>';
                }
            },
            {
                data: 'enable_sftp', title: '启用SFTP',
                render: function (value) {
                    return '<div class="text-center"><span class="label label-primary">' + getLabel(value) + '</span></div>';
                }
            }
        ];

        // 主机地址  hostname
        // 端口     port
        // 用户名    username
        // 密码     password
        // 域       domain
        // 加密模式  security
        // 忽略证书  ignore_cert
        // 禁止认证  disable_auth
        // 客户端名称 client_name
        // console会话 console
        // 初始化参数 initial_program
        // 服务器键盘布局 server_layout
        // 色彩深度 color_depth
        // 宽度    width
        // 高度    height
        // dpi     dpi
        // 禁止音频 disable_audio
        // 允许打印  enable_printing
        // 允许驱动  enable_drive
        // 驱动地址  drive_path
        // 创建驱动路径 create_drive_path
        // console会话音频 console_audio
        // 静态通道  static_channels
        // 开启sftp      enable_sftp
        // sftp主机地址   sftp_hostname
        // sftp端口      sftp_port
        // sftp用户名     sftp_username
        // sftp密码      sftp_password
        // sftp私钥      sftp_private_key
        // sftp私钥密码   sftp_passphrase
        // sftp默认目录   sftp_directory
        // 允许壁纸  enable_wallpaper
        // 允许主题  enable_theming
        // 启用字体平滑 enable_font_smoothing
        // 启用全屏拖拽 enable_full_window_drag
        // 启用桌面组合 enable_desktop_composition
        // 启用菜单动画 enable_menu_animations
        // 远程应用程序 remote_app
        // 远程应用程序地址 remote_app_dir
        // 远程应用程序参数 remote_app_args
        var rdp_columns = [
            {data: 'name', title: '名称'},
            {data: 'hostname', title: '主机地址', class: 'text-center'},
            {
                data: 'port', title: '端口',
                render: function (value) {
                    return '<div class="text-center"><span class="badge  bg-color-greenLight">' + value + '</span></div>';
                }
            },
            {data: 'username', title: '用户名', class: 'text-center'},
            {data: 'domain', title: '域', class: 'text-center'},
            {
                data: 'color_depth', title: '色彩深度',
                render: function (value) {
                    return '<div class="text-center">' + getDepthLabel(value) + '</div>';
                }
            },
            {
                data: 'enable_font_smoothing', title: '字体平滑',
                render: function (value) {
                    return '<div class="text-center"><span class="label label-info">' + getLabel(value) + '</span></div>';
                }
            },
            {
                data: 'enable_wallpaper', title: '壁纸',
                render: function (value) {
                    return '<div class="text-center"><span class="label label-default">' + getLabel(value) + '</span></div>';
                }
            },
            {
                data: 'enable_theming', title: '主题',
                render: function (value) {
                    return '<div class="text-center"><span class="label label-success">' + getLabel(value) + '</span></div>';
                }
            },
            {
                data: 'enable_sftp', title: '启用SFTP',
                render: function (value) {
                    return '<div class="text-center"><span class="label label-primary">' + getLabel(value) + '</span></div>';
                }
            }
        ];

        // 动态生成columns
        var columns = [
            {data: 'name', title: '名称'},
            {
                data: 'hostname', title: '主机地址', class: 'text-center'
            },
            {
                data: 'port', title: '端口',
                render: function (value) {
                    return '<div class="text-center"><span class="badge  bg-color-greenLight">' + value + '</span></div>';
                }
            },
            {
                data: 'protocol', title: '协议',
                render: function (value) {
                    return '<div class="text-center"><span class="txt-color-teal">' + getTypeLabel(value) + '</span></div>';
                }
            },
            {
                data: 'username', title: '用户名', class: 'text-center',
                render: function (value) {
                    return (value != null && value != "") ? value : '无';
                }
            },
            {
                data: 'enable_sftp', title: '启用SFTP',
                render: function (value, type, row) {
                    if (row['protocol'] == "telnet") {
                        return '<div class="text-center"><span class="label label-danger">不支持</span></div>';
                    }
                    return '<div class="text-center"><span class="label label-primary">' + getLabel(value) + '</span></div>';
                }
            }
        ];
        if (params && params.type != "") {
            if (params.type == "ssh") {
                columns = ssh_columns;
            } else if (params.type == "telnet") {
                columns = telnet_columns;
            } else if (params.type == "vnc") {
                columns = vnc_columns;
            } else if (params.type == "rdp") {
                columns = rdp_columns;
            }
        }

        columns.push(
                {
                    data: 'id',
                    title: '操作',
                    render: function (data) {
                        return '<a href="javascript:" class="btn btn-success" style="padding: 0 5px;" onclick="console(' + "'" + data + "'" + ')"><i class="fa fa-desktop"></i> 控制台</a>';
                    }
                });

        /**
         * 根据值获取显示名称
         */
        function getLabel(value) {
            if (value == true || value == "true" || value == "1" || value == "enable" || value == 1) {
                return "启用";
            }
            return "未启用"
        }

        /**
         * 根据值获取协议显示名
         */
        function getTypeLabel(value) {
            if (value == "rdp") {
                return "RDP 协议";
            } else if (value == "ssh") {
                return "SSH 协议";
            } else if (value == "vnc") {
                return "VNC 协议";
            } else if (value == "telnet") {
                return "TELNET 协议";
            }
            return "未知协议"
        }

        /**
         * 根据值获取颜色显示
         */
        function getColorLabel(value) {
            if (value == "gray-black") {
                return "灰/黑色";
            } else if (value == "black-white") {
                return "黑/白色";
            } else if (value == "green-black") {
                return "绿/黑色";
            } else if (value == "white-black") {
                return "白/黑色";
            }
            return "默认色"
        }

        /**
         * 根据值获取深度显示
         */
        function getDepthLabel(value) {
            if (value == "16") {
                return "低色(16位)";
            } else if (value == "24") {
                return "真色(24位)";
            } else if (value == "32") {
                return "真色(32位)";
            } else if (value == "256") {
                return "256色";
            }
            return "默认"
        }

        var datatable = new DataTableData({
                    databind: $param_table.get(0),
                    //数据请求url地址
                    dataurl: '${ctx}/tools/console/list',
                    //数据请求参数
                    params: params,
                    hasCache: true,
                    hasCheck: true,
                    info: false,
                    alls: true,
                    checkBind: 'id',
                    toolbarStates: {
                        "add": {
                            action: function () {
                                form(-999);
                            }
                        },
                        "edit": {
                            action: function () {
                                var selDatas = datatable.getSelectedDatas();
                                if (selDatas && selDatas.length > 0) {
                                    form(selDatas[0]['id']);
                                }
                            }
                        },
                        "delete": {
                            mult: false,   // 不允许多选删除
                            action: function () {
                                var selDatas = datatable.getSelectedDatas();
                                if (selDatas && selDatas.length > 0) {
                                    var id = selDatas[0]['id'];
                                    layer.confirm('您真的要删除选择的数据？', {
                                                icon: 3,
                                                title: '删除参数',
                                                btn: ['确定', '取消'], //按钮
                                                shade: 0.4 //不显示遮罩
                                            }, function (index) {
                                                // send
                                                ajaxCoomand({
                                                    url: '${ctx}/tools/console/delete',
                                                    data: {id: id},
                                                    callback: function () {
                                                        datatable.refresh();
                                                        var treeObj = $.fn.zTree.getZTreeObj("paramTree");

                                                        var node = treeObj.getNodeByParam("id", "${id}");
                                                        if (node) {
                                                            treeObj.reAsyncChildNodes(node, "refresh");
                                                        }
                                                    }
                                                });

                                                layer.close(index);
                                            }
                                    );
                                }
                            }
                        },
                        "refresh": {
                            action: function () {
                                var treeObj = $.fn.zTree.getZTreeObj("paramTree");
                                var nodes = treeObj.getSelectedNodes();
                                if (nodes && nodes.length > 0) {
                                    datatable.refresh({type: nodes[0].id});
                                }
                            }
                        }
                    },
                    columns: columns
                }
        );

        /**
         * 修改任务
         */
        function form(id) {

            var treeObj = $.fn.zTree.getZTreeObj("paramTree");
            var node = treeObj.getNodeByParam("id", id);
            if (node) {
                node.selectParentId = "${id}";
                treeObj.selectNode(node);
                $("#" + node.tId + "_a").click();
            }
        }

        /**
         * 打开控制台
         */
        function console(id) {

            layer.open({
                type: 2,
                title: '远程终端',
                shadeClose: false,
                btn: ['关闭'],
                shade: false,
                maxmin: true, //开启最大化最小化按钮
                area: ['1000px', '700px'],
                yes : function (index) {
                    //得到iframe页的窗口对象，执行iframe页的方法：iframeWin.method();
                   // var iframeWin = window['layui-layer-iframe' + index];
                    //iframeWin.pagedestroy();
                    layer.close(index);
                },
                cancel: function (index) {
                    //得到iframe页的窗口对象，执行iframe页的方法：iframeWin.method();
                    //var iframeWin = window['layui-layer-iframe' + index];
                   // iframeWin.pagedestroy();
                },
                content: "${ctx}/tools/console/console?id=" + id
            });
        }

        // 注册
        window.form = form;
        window.console = console;

    };

    // destroy generated instances
    // pagedestroy is called automatically before loading a new page
    // only usable in AJAX version!
    var pagedestroy = function () {
        // 移除注册方法
        window.form = undefined;
        window.console = undefined;
    };
    // end destroy

    // load related plugins
    loadScript("/static/js/plugin/datatables/jquery.dataTables.js", function () {
        loadScript("/static/js/plugin/datatables/dataTables.colVis.js", function () {
            loadScript("/static/js/plugin/datatables/dataTables.tableTools.js", function () {
                loadScript("/static/js/plugin/datatables/dataTables.bootstrap.js", function () {
                    loadScript("/static/js/plugin/datatable-responsive/datatables.responsive.js", function () {
                        loadScript("/static/js/extend/DataTableData.js", pagefunction);
                    });
                });
            });
        });
    });

</script>